package com.ray.util.qiniu;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.Logger;

import com.google.appengine.repackaged.com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.UrlSafeBase64;
import com.ray.filter.HttpAspect;
import com.ray.util.MD5FileUtil;
import com.ray.util.TimeAndUnix;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
/**
 * Qiniu文件上传
 * @author Shensg
 * 2018年6月15日
 */
public class QiniuUploadUtils {
	private static Logger logger = Logger.getLogger(QiniuUploadUtils.class);  
	/**
	 * 获取七牛上传token
	 * 
	 * @return
	 */
	public static String getToken(String accessKey,String secretKey,String bucket) {
		Auth auth = Auth.create(accessKey, secretKey);
		String upToken = auth.uploadToken(bucket);
		return upToken;
	} 
	/**
	 * 上传本地文件
	 * @param accessKey 秘钥
	 * @param secretKey 秘钥
	 * @param bucket	命名空间
	 * @param filePath  文件路径
	 * @param fileName	文件名 如果是null 则以hash值
	 * @param bucketUrlPrefix 每个命名空间相对应的域名
	 * @return 返回路径http://***
	 */
	public static String uploadLocalFile(String accessKey,String secretKey,String bucket,String filePath,String fileName,String bucketUrlPrefix) {
		//构造一个带指定Zone对象的配置类
		Configuration cfg = new Configuration(Zone.zone0());
		//...其他参数参考类注释
		UploadManager uploadManager = new UploadManager(cfg);
		//...生成上传凭证，然后准备上传
		//如果是Windows情况下，格式是 D:\\qiniu\\test.png
		String localFilePath = filePath;
		//默认不指定key的情况下，以文件内容的hash值作为文件名
		if(fileName!=null) {
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
			fileName=simpleDateFormat.format(new Date())+fileName;
		}
		String key = fileName;
		Auth auth = Auth.create(accessKey, secretKey);
		String upToken = auth.uploadToken(bucket);
		try {
		    Response response = uploadManager.put(localFilePath, key, upToken);
		    //解析上传成功的结果
		    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
		    if (fileName==null) {
				return bucketUrlPrefix+putRet.hash;
			}else {
				return bucketUrlPrefix+fileName;
			}
		} catch (QiniuException ex) {
		    Response r = ex.response;
		    System.err.println(r.toString());
		    try {
		        System.err.println(r.bodyString());
		    } catch (QiniuException ex2) {
		        //ignore
		    }
		}
		return null;
	}
	/**
	 * 上传InputStream文件
	 * @param accessKey 秘钥
	 * @param secretKey 秘钥
	 * @param bucket	命名空间
	 * @param fileName	文件名 如果是null 则以hash值
	 * @param inputStream 
	 * @param bucketUrlPrefix 每个命名空间相对应的域名
	 * @return 返回路径http://***
	 */
	public static String uploadFileByStream(String accessKey,String secretKey,String bucket,InputStream inputStream,String fileName,String bucketUrlPrefix) {
		Configuration cfg = new Configuration(Zone.zone0());
		//...其他参数参考类注释
		UploadManager uploadManager = new UploadManager(cfg);
		//...生成上传凭证，然后准备上传
		//默认不指定key的情况下，以文件内容的hash值作为文件名
		if(fileName!=null) {
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
			fileName=simpleDateFormat.format(new Date())+fileName;
		}
		String key = fileName;
		//byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
		//ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
		Auth auth = Auth.create(accessKey, secretKey);
		String upToken = auth.uploadToken(bucket);
		try {
		    Response response = uploadManager.put(inputStream,key,upToken,null, null);
		    //解析上传成功的结果
		    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
		    if (fileName==null) {
				return bucketUrlPrefix+putRet.hash;
			}else {
				return bucketUrlPrefix+fileName;
			}
		} catch (QiniuException ex) {
		    Response r = ex.response;
		    System.err.println(r.toString());
		    try {
		        System.err.println(r.bodyString());
		    } catch (QiniuException ex2) {
		        //ignore
		    }
		}
		return null;
	}
	/**
	 * 长传base64文件
	 * @param accesskey
	 * @param secretkey
	 * @param bucketshinehaopic
	 * @param bucketshinehaopicurlprefix
	 * @return
	 * @throws IOException 
	 */
	public static String uploadFileByBase64(String base64Content,String accessKey, String secretKey, String bucket,String bucketUrlPrefix) throws IOException {
		//...生成上传凭证，然后准备上传
		String key = MD5FileUtil.getMD5String(base64Content);
		Auth auth = Auth.create(accessKey, secretKey);
		String upToken = auth.uploadToken(bucket);
		
        int l = -1;       
        if(base64Content.indexOf("base64,")>0) {
        	base64Content=base64Content.split("base64,")[1];
        }
        String file64 = base64Content;
        String url = "http://upload.qiniup.com/putb64/" + l+"/key/"+ UrlSafeBase64.encodeToString(key);      
        //非华东空间需要根据注意事项 1 修改上传域名
        RequestBody rb = RequestBody.create(null, file64);
        Request request = new Request.Builder().
                url(url).
                addHeader("Content-Type", "application/octet-stream")
                .addHeader("Authorization", "UpToken " + upToken)
                .post(rb).build();
        System.out.println(request.headers());
        OkHttpClient client = new OkHttpClient();
        okhttp3.Response response = client.newCall(request).execute();
        System.out.println(response);
        if(response.code()!=200) {
        	logger.error("【base64上传错误】"+base64Content);
        }
        response.close();
	    return bucketUrlPrefix+key;
	}
	public static void main(String[] args) throws IOException {
		System.out.println(QiniuUploadUtils.uploadFileByBase64("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", QiniuConfig.accessKey, QiniuConfig.secretKey, QiniuConfig.bucketShinehaopic, QiniuConfig.bucketShinehaopicUrlPrefix));
	}
}
